﻿package com.wongoing.sys.service.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.jhlabs.image.HalftoneFilter;
import com.wongoing.base.BaseServiceImpl;
import com.wongoing.sys.dao.SysPermissionDao;
import com.wongoing.sys.model.SysPermission;
import com.wongoing.sys.model.ext.SysPermissionExt;
import com.wongoing.sys.service.SysPermissionService;

@Service("sysPermissionService")
@Transactional
public class SysPermissionServiceImpl extends BaseServiceImpl<SysPermission> implements SysPermissionService {
	private SysPermissionDao dao;

	@Autowired
	public void setDao(SysPermissionDao dao) {
		super.setDao(dao);
		this.dao = dao;
	}
	
	/**
	 * 功能说明：根据状态查询权限项列表
	 * 修改说明：
	 * @author zhenglibing,吴兆强
	 * @date 2017年10月13日 下午9:46:50
	 * @param status 查询参数：状态
	 * @param type 查询参数：类型
	 * @return 返回符合条件的权限项记录集合
	 */
	public List<SysPermission> getByStatusAndType(String status, String type) {
		Map<String,Object> param = new HashMap<String,Object>();
		param.put("status", status);
		param.put("type", type);
		return this.dao.getByStatusAndType(param);
	}
	
	/**
	 * 功能说明：根据用户名和状态查询权限项列表
	 * 修改说明：
	 * @author zhenglibing,吴兆强
	 * @date 2017年10月13日 下午9:48:06
	 * @param account 查询参数：账户
	 * @param status 查询参数：状态
	 * @param type 查询参数：类型
	 * @return 返回符合条件的权限项记录集合
	 */
	public List<SysPermission> getByUserAccount(String account, String status, String type) {
		Map<String,Object> param = new HashMap<String,Object>();
		param.put("account", account);
		param.put("status", status);
		param.put("type", type);
		return this.dao.getByUserAccount(param);
	}
	
	/**
	 * 功能说明：根据角色ID获取权限
	 * 修改说明：
	 * @author zhenglibing,吴兆强
	 * @date 2017年10月13日 下午9:49:19
	 * @param roleId 查询参数：角色Id
	 * @param status 查询参数：状态
	 * @return
	 */
	public List<SysPermission> getByRoleId(Integer roleId, String status) {
		Map<String,Object> param = new HashMap<String,Object>();
		param.put("roleId", roleId);
		param.put("status", status);
		return this.dao.getByRoleId(param);
	}
	
	/**
	 * 功能说明：根据状态查询权限项字符串列表
	 * 修改说明：
	 * @author zhenglibing,吴兆强
	 * @date 2017年10月13日 下午9:50:09
	 * @param status 查询参数：状态
	 * @param type 查询参数：类型
	 * @return 返回符合条件的字符串集合
	 */
	public List<String> getSysIdByStatusAndType(String status, String type) {
		Map<String,Object> param = new HashMap<String,Object>();
		param.put("type", type);
		param.put("status", status);
		return this.dao.getSysIdByStatusAndType(param);
	}
	
	/**
	 * 功能说明：根据用户名和状态查询权限项字符串列表
	 * 修改说明：
	 * @author zhenglibing,吴兆强
	 * @date 2017年10月13日 下午9:50:09
	 * @param account 查询参数：账户
	 * @param status 查询参数：状态
	 * @param type 查询参数：类型
	 * @return
	 */
	public List<String> getSysIdByUserAccount(String account, String status, String type) {
		Map<String,Object> param = new HashMap<String,Object>();
		param.put("account", account);
		param.put("type", type);
		param.put("status", status);
		return this.dao.getSysIdByUserAccount(param);
	}
	
	/**
	 * 功能说明：根据状态和使用标识获取权限列表（页面展示）
	 * 修改说明：
	 * @author zhenglibing,吴兆强
	 * @date 2017年10月13日 下午9:51:30
	 * @param status 查询参数：状态
	 * @param isUsed 查询参数：是否使用标识
	 * @return 返回符合条件的权限扩展项集合
	 */
	public List<SysPermissionExt> getPermissionListByParam(String status, String isUsed) {
		Map<String,Object> param = new HashMap<String,Object>();
		param.put("isUsed", isUsed);
		param.put("status", status);
		return this.dao.getPermissionListByParam(param);
	}
	
	/**
	 * 功能说明：各种菜单（树形控件）中使用的权限列表数据
	 * 修改说明：
	 * @author zhenglibing,吴兆强
	 * @date 2017年10月13日 下午9:52:55
	 * @param status 查询参数：状态
	 * @param isUsed 查询参数：是否使用标识
	 * @return
	 */
	public List<SysPermission> getListByParamToMenu(String status, String isUsed) {
		Map<String,Object> param = new HashMap<String,Object>();
		param.put("isUsed", isUsed);
		param.put("status", status);
		return this.dao.getListByParamToMenu(param);
	}
}
